package com.gy.spring.mvc.common.tools;

import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonTool {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * <p>方法说明: TODO 将对象转换为JSON字符串
     * <p>参数说明: Object data 需转换的对象
     * <p>返回说明:
     * <p>创建时间: 2017年9月27日 下午2:54:23
     * <p>创  建  人: geYang
     **/
    public static String objectToJson(Object data) {
        try {
            String string = MAPPER.writeValueAsString(data);
            return string;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * <p>方法说明: TODO 将JSON数据转化为对象
     * <p>参数说明: String jsonData  JSON数据
     * <p>参数说明: Class beanType   转化的对象
     * <p>返回说明:
     * <p>创建时间: 2017年9月27日 下午2:57:52
     * <p>创  建  人: geYang
     **/
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * <p>方法说明: TODO 将JSON数据转化为对象List
     * <p>参数说明: String jsonData  JSON数据
     * <p>参数说明: Class beanType   转化的对象
     * <p>返回说明:
     * <p>创建时间: 2017年9月27日 下午3:00:37
     * <p>创  建  人: geYang
     *
     * @param <T>
     * @param <T>
     **/
    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    /**
     * <p>方法说明: TODO 将JSON数据转化为List<Map>
     * <p>参数说明: String rsContent JSON数据
     * <p>返回说明:
     * <p>创建时间: 2017年9月27日 下午3:01:58
     * <p>创  建  人: geYang
     **/
    public static List<Map<String, Object>> jsonStringToList(String rsContent)
            throws Exception {

        return null;
    }


}
